<?php
def("amicitia/arquitectura/seguridad/","Guardian");
def("amicitia/arquitectura/anotacion/","AnotacionParser");

/**
 * Implementación concreta de 'Guardian' encargada de leer los privilegios de
 * los recursos usando anotaciones dispuestas en los mismos recursos.
 * 
 * @author Willy A. Kuster
 */
class AnotacionGuardian extends Guardian {
	
	const RECURSO = "Recurso";
	private $recurso;
	private $anotacion;
	
	protected function setRecurso($recurso){
		$this->recurso = $recurso;
		$parser = new AnotacionParser($recurso);
		if($parser->existeAnotacion(self::RECURSO)){
			$this->anotacion = $parser->obtenerAnotacion(self::RECURSO);
			return true;
		} else 
			return false;
	}
	
	protected function getTipoRecurso(){
		return $this->anotacion->tipo;
	}
	
	protected function getNivelRecurso(){
		return (int)$this->anotacion->nivel;
	}
	
}
?>